//给定一个 24 小时制（小时:分钟 "HH:MM"）的时间列表，找出列表中任意两个时间的最小时间差并以分钟数表示。
//
//
//
// 示例 1：
//
//
//输入：timePoints = ["23:59","00:00"]
//输出：1
//
//
// 示例 2：
//
//
//输入：timePoints = ["00:00","23:59","00:00"]
//输出：0
//
//
//
//
// 提示：
//
//
// 2 <= timePoints <= 2 * 10⁴
// timePoints[i] 格式为 "HH:MM"
//
//
//
//
// 注意：本题与主站 539 题相同： https://leetcode-cn.com/problems/minimum-time-difference/
// Related Topics 数组 数学 字符串 排序 👍 12 👎 0

package leetcode.editor.cn;

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

@SuppressWarnings("all")
//Java：最小时间差
public class 最小时间差 {
    public static void main(String[] args) {
        Solution solution = new 最小时间差().new Solution();
        // TO TEST
        final List<String> timePoints = Arrays.asList("23:59", "00:00");
        System.out.println(solution.findMinDifference(timePoints));
    }

    //leetcode submit region begin(Prohibit modification and deletion)
    class Solution {

        public int findMinDifference(List<String> timePoints) {
            if (timePoints.size() > 60 * 24)
                return 0;

            final List<Integer> res = timePoints.stream()
                    .map(e -> {

                        String[] nums = e.split(":");
                        int time = Integer.parseInt(nums[0]) * 60 + Integer.parseInt(nums[1]);
                        return time;

                    })
                    .sorted()
                    .collect(Collectors.toList());


            res.add(res.get(0) + 24 * 60);
            int ret = Integer.MAX_VALUE;
            for (int i = 1; i < res.size(); i++) {
                ret = Math.min(res.get(i) - res.get(i - 1), ret);
            }

            return ret;

        }
    }
//leetcode submit region end(Prohibit modification and deletion)


}
